package model

import (
	"time"

	"github.com/shopspring/decimal"
	"gorm.io/gorm"
)

type OrganizationPurchase struct {
	PurchaseID   uint             `gorm:"primaryKey;autoIncrement;column:purchase_id"` // 主键自增[1,9](@ref)
	Title        string           `gorm:"type:varchar(100);not null"`                  // 求购标题（非空）
	City         string           `gorm:"type:varchar(50);not null"`                   // 所在城市（带索引）
	Area         *decimal.Decimal `gorm:"type:decimal(10,2)"`                          // 面积需求（指针表示可空）
	Budget       decimal.Decimal  `gorm:"type:decimal(12,2);not null"`                 // 求购预算（强制非空）
	Department   *string          `gorm:"type:varchar(50)"`                            // 需求科室（指针表示可空）
	Brief        *string          `gorm:"type:varchar(20)"`                            // 摘要（20字内）
	Details      *string          `gorm:"type:text"`                                   // 详细需求说明
	ContactName  string           `gorm:"type:varchar(50);not null"`                   // 实名联系人
	ContactPhone string           `gorm:"type:varchar(20);not null"`                   // 联系电话
	PublishTime  time.Time        `gorm:"autoCreateTime"`                              // 自动填充发布时间[10](@ref)
	IsDeleted    bool             `gorm:"column:is_deleted;default:false;comment:是否已软删除"`
	UserID       uint             `gorm:"index;not null"`                              // 外键索引[3,9](@ref)
}

// 自定义表名（与数据库表名一致）
func (OrganizationPurchase) TableName() string {
	return "organization_purchase"
}

// 关联用户信息（需确保 User 模型存在）
func (o *OrganizationPurchase) User(db *gorm.DB) (*User, error) {
	var user User
	if err := db.Where("user_id = ?", o.UserID).First(&user).Error; err != nil {
		return nil, err
	}
	return &user, nil
}
